package com.ychs.dpmms.entity;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.Date;

/**
 * copyright(c)2021 YYB.ALL rights Reserved
 * <p>
 * 描述:发展党员实体类
 *
 * @author 原玉波
 * @version 1.0
 * @date 2021/8/30
 */
@Data
public class Developer {

    /**
     *id
     */
    private int id;
    /**
     *状态
     */
    private State state;
    /**
     *身份
     */
    private Capacity capacity;
    /**
     *所属用户
     */
    private User user;
    /**
     *代号
     */
    @NotNull(message = "代号不能为空")
    @Size(min = 5,max=20,message = "代号最小5位，最大20位")
    private String code;
    /**
     *姓名
     */
    @NotNull(message = "姓名不能为空")
    @Size(min = 2,max=20,message = "姓名最小5位，最大20位")
    private String name;
    /**
     *性别
     */
    @NotEmpty(message = "性别不能为空")
    private int sex;
    /**
     *民族
     */
    @NotNull(message = "民族不能为空")
    @Size(min = 2,max=20,message = "民族最小2位，最大20位")
    private String nation;
    /**
     *出生日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd", locale = "zh", timezone = "GMT+8")
    private Date birthDate;
    /**
     *专业
     */
    @NotNull(message = "专业不能为空")
    @Size(min = 5,max=20,message = "专业最小5位，最大20位")
    private String major;
    /**
     *年级
     */
    @NotEmpty(message = "年级不能为空")
    private int grade;

    /**
     * 发展批次
     */
    private int batch;
    /**
     *提交入党申请书时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", locale = "zh", timezone = "GMT+8")
    private Date submitEnterApplicationDate;
    /**
     *入党谈话是否通过
     */
    private int talkPassStatus;
    /**
     *积极分子推选时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", locale = "zh", timezone = "GMT+8")
    private Date pushPositiveDate;
    /**
     *是否通过积极分子推选
     */
    private int pushPositiveStatus;
    /**
     *确认积极分子时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", locale = "zh", timezone = "GMT+8")
    private Date confirmPositiveDate;
    /**
     *院党课培训时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", locale = "zh", timezone = "GMT+8")
    private Date collegeClassDate;
    /**
     *院党课是否通过
     */
    private int collegeClassStatus;
    /**
     *发展对象推优时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", locale = "zh", timezone = "GMT+8")
    private Date pushDevelopDate;
    /**
     * 发展对象推优状态
     */
    private int pushDevelopStatus;
    /**
     *确认发展对象时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", locale = "zh", timezone = "GMT+8")
    private Date confirmDevelopDate;
    /**
     *政审结果
     */
    private int politicalReview;
    /**
     *校党课培训时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", locale = "zh", timezone = "GMT+8")
    private Date schoolClassDate;
    /**
     *校党课是否通过
     */
    private int schoolClassStatus;
    /**
     *是否通过预备党员预审
     */
    private int advanceReviewStatus;
    /**
     *入党时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", locale = "zh", timezone = "GMT+8")
    private Date enterPartyTime;
    /**
     *是否递交转正申请书
     */
    private int submitFullApplicationStatus;
    /**
     *是否通过党员转正公示
     */
    private int publicityStatus;
    /**
     *转正时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", locale = "zh", timezone = "GMT+8")
    private Date fullApplicationDate;
    /**
     *备注
     */
    private String remark;
}
